package main

import (
	"fmt"
	"net"
	"strings"
)

func mainss() {
	// 创建监听
	ip := "127.0.0.1"
	port := 8848
	address := fmt.Sprintf("%s:%d", ip, port)

	listenner, err := net.Listen("tcp", address)
	// net.Listen("tcp", ":8848") 默认本机
	if err != nil {
		fmt.Println("net.Listen err:", err)
		return
	}

	fmt.Println("监听中......")

	// Accept() (net.Conn, error)，，，建立连接
	conn, err := listenner.Accept()
	if err != nil {
		fmt.Println("listenner.Accept err:", err)
		return
	}

	fmt.Println("连接建立成功!")

	// 创建一个容器，用于接收读取到的数据
	buf := make([]byte, 1024) // 使用make创建字节切片，byte ==> uint8
	// Read(b []byte) (n int, err error)
	// cnt:真正读取client发来的数据长度
	cnt, err := conn.Read(buf)
	if err != nil {
		fmt.Println("conn.Read err:", err)
		return
	}

	fmt.Println("Client =====> Server, 长度:", cnt, ", 数据: ", string(buf[:cnt]))

	// 服务器对客户端请求进行响应
	// 将数据转为大写“hello” ====> HELLO
	upperDate := strings.ToUpper(string(buf[:cnt]))

	// Write(b []byte) (n int, err error)
	cnt, err = conn.Write([]byte(upperDate))
	if err != nil {
		fmt.Println("conn.Write err:", err)
		return
	}
	fmt.Println("Client <======= Server, 长度: ", cnt, ", 数据: ", upperDate)

	// 关闭连接
	conn.Close()
}
